# !/usr/bin/env python
# -*- coding: utf-8 -*-
# ///////////////////////////////////////////////////////////////
# @File    :   getImageBaseData.py
# @Time    :   2024/08/21 14:39:56
# @Author  :   kai.luo
# @Version :   1.0.0
# @Desc    :   获取医疗图片中头部信息的公共库
# ///////////////////////////////////////////////////////////////

from moudles.Common.common import *
import traceback


class HeaderInfo(object):
    """
    姓名,性别,年龄
    病历号,科室,标本情况
    联系电话,采样时间,接收时间
    Args:
        object (_type_): _description_
    """

    def __init__(self, **kwarg) -> None:
        # 初始化对象
        self.chongqin, self.sichuan = getArea()

        # 初始化参数
        self.commonXList = list()
        self.commonPosValue = list()

    def getHospitalName(self, data: list):
        """
        获取医院名称
        Args:
            data (_type_): _description_
        """
        for entry in data:
            text = entry[1][0]
            areas = self.chongqin+self.sichuan
            for area in areas:
                if area in text:
                    return {'检测医院名称': text}

    def checkSplitKeyValue(self, data: list):
        """
        筛选分离出key和value在一起的情况
        Args:
            data (list): _description_

        Returns:
            _type_: _description_
        """
        header_key_value_list = list()
        for item in data:
            try:
                text = re.sub(r'\s', '', item[1][0])
                text_list = text.split('：')
                if '：' in text and len(text_list) >= 2:
                    num_1 = text_list[0]
                    num_2 = text_list[1]
                    if len(num_1) > 1 and len(num_2) > 1:
                        header_key_value_list.append([num_1, num_2])
            except:
                print(traceback.print_exc())

        return header_key_value_list

    def filterMatchKeyValue(self, commonPosValue):
        header_key_value = dict()
        for item in commonPosValue:
            try:
                key = item[0]
                value = item[1]
                if re.findall(r'[姓名]', key):
                    if not header_key_value.get('姓名', ''):
                        header_key_value.setdefault('姓名', value.split('：')[-1])
                elif re.findall(r'性别|^性', key):
                    if not header_key_value.get('性别', ''):
                        header_key_value.setdefault('性别', value.split('：')[-1])
                elif re.findall(r'^年龄|^年', key):
                    if not header_key_value.get('年龄', ''):
                        header_key_value.setdefault('年龄', value.split('：')[-1])
                elif re.findall(r'病历号|标本条码|门诊[卡号]*', key):
                    if not header_key_value.get('病历号', ''):
                        header_key_value.setdefault('病历号', value.split('：')[-1])
                elif re.findall(r'科室|^科', key):
                    if not header_key_value.get('科室', ''):
                        header_key_value.setdefault('科室', value.split('：')[-1])
                elif re.findall(r'检查部位|部位', key):
                    if not header_key_value.get('检查部位', ''):
                        header_key_value.setdefault('检查部位', value.split('：')[-1])
                elif re.findall(r'临床诊断|临床病史|临床', key):
                    if not header_key_value.get('临床病史', ''):
                        header_key_value.setdefault('临床病史', value.split('：', 1)[-1])
            except:
                print(traceback.print_exc())

        return header_key_value
